השגיאה הזאת קוראת כשמשהו בסנינטקס לא נכון. לא סגרנו סוגריים של איזה פונקציה או גרשיים של איזה מחרוזת ו-PHP לא מסוגלת להבין את קוד ה-PHP לפניה. אבל מה אם הקוד תקין לחלוטין?
אם בדקתם את הקוד והכל תקין וגם ה IDE שלכם אומרת שהכל בסדר, אז כנראה הבעיה ב
short open tags = Off
בהתחלה לא האמתני ל-IDE
אני רואה שגיאה על המסך אבל העורך טקסט אומר שאין שום שגיאות. — איך זה יכול להיות ?!
ברור שהעורך מטומטם!
בדיקת סינטקס עם PHP
לא עובד העורך? נמצא דרך אחרת לבדוק סינטקס.
מוכנים? תופים: php -l
שורת פקודה אחת קצרה בודקת קבצי PHP על הימצאות שגיאות סינטקטיות.
עובד פשוט מאוד:
פותחים את שורת הפקודה ומקלידים php -l filename.php
אם נקבל הודעה ש-windows לא יודעת מה זה php, נצטרך לכתוב את הנתיב המלא למפענח ה-php.
משהו בסגנון:
C:\wamp\php\php.exe -l C:\fileToCheck.php
וגם פה אין שגיאות??!
גם מפענח ה-PHP שלי לא מצא שגיאות.
כל הקבצים עוברים עם No syntax errors detected — מה שאומר שהקוד תקין לחלוטין.
תגי פתיחה קצרים
זו הבעיה.
כשהתגים הקצרים מכובים והקוד שלכם כולל כמה כאלה - מפענח ה-PHP לא מבין את הקוד.
אבל, בגלל של-PHP יש כמה קבצים php.ini מבקביל, אחד למקרה ש php מופעל דרך שרת apache, השני לגרסה שבה הוא מופעל בתור CGI והשלישי לשורת הפקודה — יכול להיווצר מצב, שתגי פתיחה קצרים מאושרים בגירסת שורת הפקודה, אבל לא בגרסאות האחרות.
ככה שלרשותך שני אופציות:
א. לשנות את התגים ל <?php במקום <?
ב. לשנות בקונפיג את short_open_tags = On
כאשר אני ממליץ על אפשרות א'. אחרי הכל המחשב שלכם לא היחידי שעשוי הי פעם להריץ את הקוד.
תגובות לכתבה:
תודה רבה :)
*תופים ...
עוד טיפ על הדרך..
אם מריצים דרך ה-CLI, ויש לך נגיד לולאה שהתחלת אותה עם <?php ובאמצע עשיתי פעולה עם <?, אז הקוד גם ימות.
תודה יקיר.
לדעתי תקנו את הבאג הזה ב 5.4.7. הקוד הבא ב cli עובד פרפקט:
<?php
while($i++ < 1000)
{
?>
x
<?
};
זה באג שיצא לי להתקל בו, וטוב שידעו אותו.